<?php
/**
 * Created by PhpStorm.
 * User: gzy
 * Date: 2021/3/2
 * Time: 7:39
 */
//单例模式
class Mysql{
    //该属性用来保存实例
    private $instance;
    private $conn;
    //构造函数为private,防止创建对象
    private function __construct(){
        $this->conn = mysql_connect('localhost','root','123456');
    }
    //创建一个用来实例化对象的方法
    public static function getInstance(){
        if (!(self::$instance instanceof self)) {
            self::getInstance();
        }
        return self::$instance;
    }
    //防止对象被复制
    public function __clone() {
        trigger_error('clone is not allowed');
    }
    public function query(){

    }
}
Mysql::getInstance()->query();
//工厂模式
class Test1{
    static function test(){
        echo 'hello';
    }
}
class Factory{
    /*
        * 如果某个类在很多的文件中都new ClassName()，那么万一这个类的名字
        * 发生变更或者参数发生变化，如果不使用工厂模式，就需要修改每一个PHP
        * 代码，使用了工厂模式之后，只需要修改工厂类或者方法就可以了。
        */
    static function createData(){
        $test = new Test1();
        return $test;
    }
}
$test = Factory::createData();
$test->test();